package com.code.gen;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ArrayUtil;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;

public class StaticGenerator {
    public static void main(String[] args) {
        String projectPath = System.getProperty("user.dir");
        System.out.println(projectPath);
        String inputPath = new File(projectPath,"code_gen_demo/src").getAbsolutePath();
        String outputPath = projectPath;
        copyFileByHutool(inputPath,outputPath);
    }
    public static void copyFileByHutool(String inputPath,String outPath){
        FileUtil.copy(inputPath,outPath,false);
    }

    /**
     * @param inputPath 输入路径
     * @param outFile 输入路径
     *
     */
    public static void copyFile(File inputPath,File outFile) throws IOException {
        /**
         * 文件拷贝算法：
         * 1、根据输入文件名获取，当前路径是文件还是目录
         * 2、在此根目录下面创建一个名字一样的文件
         * 3、查看当前文件是否存在，如果不存在则创建文件夹
         * 4、如果是文件夹获取当前文件夹下面的所有子文件夹与子文件
         * 5、利用递归进行层层判断
         */
            //1：判断当前是否是文件夹
        if (inputPath.isDirectory()){
            System.out.println(inputPath.getName());
            //2
            File testOutFile = new File(outFile,inputPath.getName());
            //3
            if (!testOutFile.exists()){
                testOutFile.mkdirs();
            }
            //4
            File[] files = inputPath.listFiles();
            if (ArrayUtil.isEmpty(files)){
                return;
            }
            for (File file : files) {
                copyFile(file,testOutFile);
            }
        }else {
            Path resolve = outFile.toPath().resolve(inputPath.getName());
            Files.copy(inputPath.toPath(),resolve, StandardCopyOption.REPLACE_EXISTING);
        }
    }
}
